import com.demo.component.ArticleController;
import com.demo.component.BController;
import com.demo.component.UserComponent;
import com.demo.component.aController;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;

public class Application {
    public static void main(String[] args) {
        // 1. 先得到Spring对象
        // 方法①
//        ApplicationContext context =
//                new ClassPathXmlApplicationContext("spring-config.xml");
        // 这里的参数名字一定要和resources底下的xml文件名相对应！
//        System.out.println("ApplicationContext之后");

        // 方法②
        BeanFactory context =
                new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
//         System.out.println("BeanFactory之后");

        // 2. 从Spring中取出Bean对象
       // User user = (User) context.getBean("user"); // 参数是标识id
        // User user = context.getBean(User.class); // 参数是类对象，不需要强转（根据Bean类型来获取Bean）
        //User user = context.getBean("user",User.class); // 根据Bean名+Bean类型获取

        // 如果不使用id并且xml中只有一个注入的情况下是ok的，但是如果多个就会报错
        // ArticleController article = context.getBean("articleController",ArticleController.class);

        // 使用小写为首的类名
        //aController aController = context.getBean("aController", aController.class);

        // 使用第一二个字母均大写
        // BController bController = context.getBean("BController",BController.class);

        // 使用Component注解验证
        //UserComponent userComponent = context.getBean("userComponent",UserComponent.class);

        // 不在包中类
       User user = context.getBean("user",User.class);

        // 3. 使用Bean（可选）
        System.out.println(user.sayHi());

       // userComponent.sayHi();

        // System.out.println(bController.sayHi());

        //System.out.println(user.sayHi());

        //System.out.println(article.bookName());

        //System.out.println(aController.sayHi());
    }
}
